/*
 * Copyright 2021 by LunaSec (owned by Refinery Labs, Inc)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 */
export const LunaSecStackName = 'lunasec';

export type LunaSecStackTableNames = 'metadata-table' | 'keys-table' | 'sessions-table' | 'grants-table';

export type LunaSecStackResource =
  | 'gateway'
  | 'tokenizer-secret'
  | 'ciphertext-bucket'
  | 'tokenizer-backend-cloudfront'
  | 'tokenizer-backend-bucket'
  | LunaSecStackTableNames;

export type LunaSecStackOutputs = Record<LunaSecStackResource, string>;

export interface S3AssetFile {
  filename: string;
  content: Buffer;
}

export type SecureFrameAssetFilename = 'mainScript' | 'mainScriptMap' | 'mainStyle';

export interface SecureFrameAssetFiles {
  files: Record<SecureFrameAssetFilename, S3AssetFile>;
}

export interface CDNConfig {
  protocol: 'https' | 'http';
  host: string;
  main_script: string;
  main_style: string;
}

interface AwsResources {
  table_names: Record<string, string>;
  ciphertext_bucket: string;
}

interface TokenizerConfig {
  secret_arn: string;
}

export interface AwsResourceConfig {
  aws_gateway: AwsResources;
  tokenizer: TokenizerConfig;
}
